<?php

namespace app\admin\controller;

use app\admin\service\admin\FileService;
use think\facade\Filesystem;
use app\admin\annotation\IgnorePermission;

class Upload extends Admin
{
    /**
     * 上传文件
     * @return \think\response\Json
     * @IgnorePermission
     */
    public function upload(): \think\response\Json
    {
        $file = $this->request->file('file');
        $edit = $this->request->post('edit');
        // 检查上传的文件是否符合要求
        FileService::validateFileType($file);
        // 查询是否已经存在相同的文件，如果有就不再上传了
        $fileInfo = FileService::getSameFileUrl($file);
        // 如果返回了相同的文件地址，则直接返回，否则执行查询
        if ($fileInfo) {
            return $this->success(['data' => $fileInfo]);
        } else {
            return $this->success(['data' => FileService::doUpload($file, $edit)]);
        }
    }
}